package com.totoro.dubbo.properties;

import com.sun.istack.internal.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 注册中心配置项
 * Created by Niki on 2018/7/3 8:57
 */
@Configuration
@ConfigurationProperties(prefix = "dubbo.registry")
public class RegistryConfigProperties {
    /**
     * 注册中心地址
     * 如果地址没有端口缺省为9090，同一集群内的多个地址用逗号分隔，如：ip:port,ip:port，不同集群的注册中心，请配置多个
     */
    @NotNull
    private String address;
    /**
     * 注册中心id
     */
    private String id;
    /**
     * 注册中心协议
     * 支持dubbo http local 三种协议
     */
    private String protocol;
    /**
     * 端口
     * 当address没有带端口时使用此端口做为缺省值
     */
    private Integer port;
    /**
     * 登录注册中心用户名
     */
    private String username;
    /**
     * 登录注册中心密码
     */
    private String password;
    /**
     * 网络传输方式，
     * 可选mina,netty
     */
    private String transport;
    /**
     * 注册中心请求超时时间(毫秒)
     */
    private Integer timeout;
    /**
     * 注册中心会话超时时间(毫秒)
     * 用于检测提供者非正常断线后的脏数据，比如用心跳检测的实现，此时间就是心跳间隔，不同注册中心实现不一样
     */
    private Integer session;
    /**
     * 使用文件缓存注册中心地址列表及服务提供者列表
     * 应用重启时将基于此文件恢复，注意：两个注册中心不能使用同一文件存储
     */
    private String file;
    /** 停止时等待通知完成时间(毫秒)*/
    private Integer wait;
    /** 注册中心不存在时，是否报错*/
    private boolean check;
    /** 是否向此注册中心注册服务，如果设为false，将只订阅，不注册*/
    private boolean register;
    /** 是否向此注册中心订阅服务，如果设为false，将只注册，不订阅*/
    private boolean subscribe;
    /** 服务是否动态注册，如果设为false，注册后将显示后disable状态，需人工启用，并且服务提供者停止时，也不会自动取消册，需人工禁用。*/
    private boolean dynamic;

}
